'''
@author Pluie 2022/08/09
注意运行文件时，文件的目录下如果有img.txt会被覆盖，当然你也可以直接改源码
'''

# 首先导入PIL库
from PIL import Image

# 定义字符，索引越前越复杂
asciis = "@0o[]/*+=-. "

# 最终图像
content = ''

url = input('输入图片路径')
# 打开对应图片
img = Image.open(url)

# 将图片转为灰度图
out = img.convert('L')
# 显示灰度图（在windows上调用默认图片查看软件，linux上没试过）
# out.show()

# 元组解构
width, height = out.size

# 压缩大小，避免产生的文件太大（比例自己根据你的图像原始比例调整）
out = out.resize((int(width), int(height / 3))) # 注意参数是元组

width, height = out.size


# 遍历像素点位
for row in range(height):
    for col in range(width):
        # 灰度值大小为8bit，意味着取值为0-255（0最亮，255最暗）
        gray = out.getpixel((col, row)) # 注意参数是元组
        content += asciis[int(gray / 255 * 11)] # 乘数为asciis最大索引值，也就是最白的情况
    content += '\n'

# 输出文件
with open('./img.txt', 'w') as file:
    file.write(content)

